#include<iostream>
#include<algorithm>
using namespace std;
const int N=2e5;
int a[N+10];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    long long int limit;
    int n;
    while(cin>>limit>>n)
    {
        long long int sum=0;//记录有多少对
        a[n]=1e9;//方便双指针循环越界的时候一定超出limit
        for(int i=0;i<n;i++)
            cin>>a[i];    
        int pl=0,pr=0;//左右指针
        long long int sn=a[pl];
        while(pr<n)
        {//sn的维护有点像前缀和一样实时维护
            if(sn<limit)
            {//只要符合条件就一直移动右指针
                pr++;
                sn*=a[pr];    
                if(sn>=limit)
                    sum+=pr-pl;//到最大符合条件的界限的时候，子区间都符合
            }
            else{
                while(pl<pr&&sn>=limit)//不能取pl=pr因为最后一次加后会刚好等于
                {//只要还不符合条件就一直移动左指针直到右指针的位置
                    sn/=a[pl];
                    pl++;
                }
            }
        }
        long long int temp=(pr-(pl+1));//最后结束的时候其实pl并没有走到终点，也就是其实还剩下一部分没计算到
        cout<<sum+temp*(temp+1)/2<<"\n";//剩余的区间是从[pr-(pl+1)]加到1为止的可以直接用等差数列求和
    }
    return 0;
} 